#pragma once
#include <string>
#include <iostream>
#include "AICommon.h"

namespace NS_AIPlay
{
    enum E_AI_STATE
    {
        E_AI_STATE_INVALID  = -1,
        E_AI_STATE_IDLE     = 0,
        E_AI_STATE_MOVE     = 1,
        E_AI_STATE_ATTACK   = 2,
        E_AI_STATE_PICK     = 3,
        E_AI_STATE_DEAD     = 4,
        E_AI_STATE_NORMAL_LIFE  = 5,
        E_AI_STATE_LOW_LIFE     = 6,
        E_AI_STATE_PAUSE        = 7,
    };
    class IState
    {
    public:
        IState(E_AI_STATE eState);
        virtual ~IState();

    public:
        virtual IState* HandleEvent(E_AI_EVENT_TYPE ev);
        virtual void OnEnter(ST_ACTOR& actor);
        virtual IState* OnProcess(ST_ACTOR& actor);
        virtual void OnExit(ST_ACTOR& actor);
        E_AI_STATE GetType() { return m_eStateType; }
    protected:
        E_AI_STATE m_eStateType;
    };
}

